#!/bin/bash
set -e  # 出现错误立即退出

# 获取本机IP地址（优先使用内网地址）
get_local_ip() {
  # 尝试多种方法获取本机IP
  local ip
  ip=$(hostname -I 2>/dev/null | awk '{print $1}') || \
  ip=$(ip route get 1 | awk '{print $7; exit}' 2>/dev/null) || \
  ip=$(ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' | head -n 1)

  echo "$ip"
}

# 获取域名/IP - 优先使用环境变量，其次尝试获取公网IP，最后使用本机IP
DEFAULT_DOMAIN=${PRIVATE_REGISTRY:-""}

# 当没有设置PRIVATE_REGISTRY时，尝试获取地址
if [ -z "$DEFAULT_DOMAIN" ]; then
  # 尝试获取公网IP（带超时）
  PUBLIC_IP=$(curl -s --max-time 3 ifconfig.me 2>/dev/null || echo "")

  if [ -n "$PUBLIC_IP" ]; then
    DEFAULT_DOMAIN=$PUBLIC_IP
  else
    # 获取本机IP地址
    LOCAL_IP=$(get_local_ip)
    if [ -n "$LOCAL_IP" ]; then
      DEFAULT_DOMAIN=$LOCAL_IP
      echo "警告: 使用本机IP地址: $LOCAL_IP"
    else
      # 无法获取任何IP地址，退出安装
      echo "错误: 无法获取本机IP地址"
      echo "请手动设置 PRIVATE_REGISTRY 环境变量"
      echo "例如: export PRIVATE_REGISTRY='119.45.199.18'"
      exit 1
    fi
  fi
fi

echo "使用镜像仓库地址: $DEFAULT_DOMAIN:5000"

# 构建镜像并传递参数
docker build -t "${DEFAULT_DOMAIN}:5000/k8s-tools:1.0" .
#推送镜像
docker push ${DEFAULT_DOMAIN}:5000/k8s-tools:1.0